#!/bin/bash

# Slackware build script for LDRAW datafiles, needed by
# several LDraw utilities

# Copyright 2009-2013 Niels Horn, Rio de Janeiro, RJ, Brazil
# Copyright 2016 Philip van der Hoeven, Almere, The Netherlands
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
# permitted provided that the following conditions are met:
#
# 1. Redistributions of this script must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

# 20220222 bkw: Modified by SlackBuilds.org:
# - update for v202201.
# - host download file on slackware.uk, for now. this gives us a little
#   breathing space, when upstream changes the download file again.

cd $(dirname $0) ; CWD=$(pwd)

PRGNAM=LDraw_data
VERSION=${VERSION:-202201}
ARCH=noarch
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}

PRGSRC=complete.zip
PRGUNZIPPED=ldraw

# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
# the name of the created package would be, and then exit. This information
# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
  echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
  exit 0
fi

TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}

set -e

rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGUNZIPPED
unzip $CWD/$PRGSRC
cd $PRGUNZIPPED

# Check if we have the right version of the "source"
srcver=$(echo "20$(basename $(ls -1 models/Note*.txt | tail -n1) .txt | cut -b5-8)")
if [ "$srcver" -ne "$VERSION" ] ; then
  echo "Version of source ($srcver) does not match VERSION variable ($VERSION)"
  exit 1
fi

chown -R root:root .
find . -type d -exec chmod 0755 {} \;
find . -type f -exec chmod 0644 {} \;

# Copy the 'read-only' data to the package
mkdir -p $PKG/usr/share/LDRAW
cp -a \
  *.ldr p parts \
  $PKG/usr/share/LDRAW/

# Create / Copy the 'writable' sub-directories to /var/lib/ldraw/ and correct permissions
mkdir -p $PKG/var/lib/ldraw/{models,bitmap}
cp -a \
  models \
  $PKG/var/lib/ldraw/
chgrp -R users $PKG/var/lib/ldraw/{models,bitmap}
chmod 0775 $PKG/var/lib/ldraw/{models,bitmap}
chmod 0664 $PKG/var/lib/ldraw/models/*

# Create symlinks
cd $PKG/usr/share/LDRAW
  ln -s ../../../var/lib/ldraw/bitmap BITMAP ; ln -s BITMAP bitmap
  ln -s ../../../var/lib/ldraw/models MODELS ; ln -s MODELS models
  ln -s parts PARTS
  ln -s s PARTS/S
  ln -s p P
cd -

# Move documentation
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION/
cp -a \
  *.txt \
  $PKG/usr/doc/$PRGNAM-$VERSION/
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild

# unzip & make 'mklist'
# (this is a one-time executable, that won't be installed,
#  so we don't worry about CFLAGS)
unzip -o mklist1_6.zip
sed -i 's/_MAX_PATH/MAX_PATH/' mklist.c
sed -i 's/shortpath)/shortpath))/' mklist.c
make

# Run 'mklist' to generate "parts.lst"
cd $PKG/usr/share/LDRAW
  $TMP/$PRGUNZIPPED/mklist -d -f
cd -

mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc

cd $PKG
/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
